package com.situ.company.employee.service;

import java.util.List;

import com.situ.company.employee.dao.EmployeeDao;
import com.situ.company.employee.model.EmployeeModel;
//业务层/逻辑层--业务逻辑 --增删改查
//实现功能--甲方的说法
//目的-最终能保证数据库中的数据是正确的（不能脏数据）

//业务逻辑
//增 -- 判断主键是否重复
//删
//改
//查 多个--模糊查询
//查 一个--主键查询

public class EmployeeService {
	
	private EmployeeDao dao = new EmployeeDao();
	
	// 返回类型的核心作用：为了在调用该方法之后，通过返回结果，知道该方法调用过程中的执行情况
	/**
	 * 返回E-账号重复
	 * @param model
	 * @return
	 */
	public String insert(EmployeeModel model) {
		//添加的主键不存在时允许添加，否则不允许添加
		EmployeeModel mod = selectModel(model);
		if (mod != null) {
			return "E";
		}
		Integer result = dao.insert(model);
		return String.valueOf(result);
	}

	public String delete(EmployeeModel model) {
		Integer result = dao.delete(model);
		return String.valueOf(result);
	}

	public String update(EmployeeModel model) {
		Integer result = dao.update(model);
		return String.valueOf(result);
	}

	/**
	 * 多条件+模糊查询 --一些记录
	 * @param model
	 * @return
	 */
	public List<EmployeeModel> selectList(EmployeeModel model) {
		String code = model.getCode(); // 为什么没pass?
		if (code != null) {
			model.setCode("%" + code + "%");
		}
		String name = model.getName();
		if (name != null) {
			model.setName("%" + name + "%");
		}
		return dao.selectList(model);
	}

	/**
	 * 根据(逻辑)主键查询出唯一记录，主键不存在返回null
	 * @param model
	 * @return
	 */
	public EmployeeModel selectModel(EmployeeModel model) {
		EmployeeModel temp = new EmployeeModel();
		temp.setCode(model.getCode());
		List<EmployeeModel> list = dao.selectList(temp);
		if(list==null||list.isEmpty()) {
			return null;
		}
		return list.get(0);
	}
	
//	/**
//	 * 账户登录：
//	 * 返回0=帐号不存在，返回1=登录成功，返回2=密码错误,返回A=验证码错误
//	 * @param model
//	 * @return
//	 */
//	public String login(EmployeeModel model) {//登录
//		// TODO Auto-generated method stub
//		EmployeeModel mod = selectModel(model);
//		if(mod==null) {
//			return "0";
//		}
//		return mod.getPass().equals(model.getPass())? "1":"2";	
//	}
	
	/**
	 * 根据多条件的模糊查询出的记录条数
	 * 
	 * @param model
	 * @return
	 */
	public int selectCount(EmployeeModel model) {
		EmployeeModel temp = new EmployeeModel();
		String code = model.getCode();
		temp.setCode(code == null ? "%%" : "%" + code + "%");
		String name = model.getName();
		temp.setName(name == null ? "%%" : "%" + name + "%");
		temp.setPageOn(false);
		return dao.selectCount(temp);
	}
}
